package com.lsnu.ehr.jpa;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import com.lsnu.ehr.entity.Depa;
import com.lsnu.ehr.entity.DepaTurn;

// JpaRepository jpa操作接口，定义了常用的增删查改方法
// 泛型<DepaTurn, Long> 指定操作类和类的主键类型
// JpaRepository 接口不需要实现就可以对实体类进行增删查改JpaSpecificationExecutor分页查询
// springjpa 框架会代理接口方法进行实现

public interface DepaTurnRepository extends JpaRepository<DepaTurn, Long>, JpaSpecificationExecutor<DepaTurn> {
	/**
	 * 根据员工id查询部门调动表
	 * @param id
	 * @return
	 */
	@Query(value = "SELECT * FROM t_depa as d1 INNER JOIN t_depa as d2 ON d1.depa_higher_id = d2.id where d2.id=?1", nativeQuery = true)
	List<Depa> findDepaHById(Long id);
	
	/**
	 * 根据部门调动时间区域对部门调动进行查询
	 * @param beginDate  	开始时间
	 * @param endDate		末尾时间
	 * @param page			当前页数
	 * @param pageLength一	页最大显示数
	 * @return
	 */
	@Query(value = "select * from t_depa_turn where t_depa_turn.turn_date>=?1 and t_depa_turn.turn_date<?2 limit ?3,?4", nativeQuery = true)
	List<DepaTurn> findDepaTurnByDate(String beginDate, String endDate, Integer page, Integer pageLength);
	@Query(value = "select count(*) from t_depa_turn where t_depa_turn.turn_date>=?1 and t_depa_turn.turn_date<?2", nativeQuery = true)
	Long findDepaTurnByDateCount(String beginDate, String endDate);

}
